package com.vipboot.platform.system.framework;

import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.ArrayUtil;
import com.vipboot.framework.satoken.helper.LoginHelper;
import com.vipboot.framework.sensitive.core.SensitiveService;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

/**
 * 脱敏服务
 * 默认管理员不过滤
 * 需自行根据业务重写实现
 */
@Component
public class SensitiveServiceImpl implements SensitiveService {
    /**
     * 是否脱敏
     */
    @Override
    public boolean isSensitive(String[] roleKey, String[] perms) {
        if (!LoginHelper.isLogin()) {
            return true;
        }
        boolean roleExist = ArrayUtil.isNotEmpty(roleKey);
        boolean permsExist = ArrayUtil.isNotEmpty(perms);
        if (roleExist && permsExist) {
            if (StpUtil.hasRoleOr(roleKey) && StpUtil.hasPermissionOr(perms)) {
                return false;
            }
        } else if (roleExist && StpUtil.hasRoleOr(roleKey)) {
            return false;
        } else if (permsExist && StpUtil.hasPermissionOr(perms)) {
            return false;
        }

//        if (TenantHelper.isEnable()) {
//            return !LoginHelper.isSuperAdmin() && !LoginHelper.isTenantAdmin();
//        }
        return !LoginHelper.isSuperAdmin();
    }
}
